package org.bits.ui.model;

import java.util.ArrayList;
import java.util.List;

import org.bits.common.model.ItemTableModel;
import org.bits.data.Field;

public class FieldValuesTableModel<T> extends ItemTableModel<T>
{
    /***************************************************************************
     * 
     **************************************************************************/
    private List<Field<T>> fields;

    /***************************************************************************
     * 
     **************************************************************************/
    public FieldValuesTableModel()
    {
        fields = new ArrayList<Field<T>>();
    }

    /***************************************************************************
     * 
     **************************************************************************/
    @Override
    public Object getValueAtColumn( T issue, int col )
    {
        Field<T> field = fields.get( col );

        return field.getValue( issue );
    }

    /***************************************************************************
     * @param fields
     **************************************************************************/
    public void setFields( List<Field<T>> fields )
    {
        List<String> names = new ArrayList<String>();
        List<Class<?>> classes = new ArrayList<Class<?>>();

        this.fields.clear();
        this.fields.addAll( fields );

        for( Field<T> field : fields )
        {
            names.add( field.getName() );
            classes.add( field.getClass() );
        }

        setColumnNames( names );
        setColumnClasses( classes );

        super.fireTableStructureChanged();
    }
}
